#ifndef _RASTERIZATION_
#define _RASTERIZATION_

#include "sdl_surface.h"
#include "sdl_event.h"
#include "sdl_exception.h"
#include "scene.h"
#include "raster_camera.h"
#include "interpolate_shader.h"


class Rasterization
	: public sdl::SurfaceListener
	, public sdl::EventListener
{
public:
	Rasterization() throw (sdl::Exception);

private:
	// Callback methods
	void on(sdl::SurfaceListener::Update, sdl::Surface*) throw();
	void on(sdl::EventListener::NewEvent, const SDL_Event*) throw();

	Scene _scene;
	RasterCamera _camera;
	InterpolateShader _ishader;
};

#endif // _RASTERIZATION_
